#include <REGX52.H>

//
//the driver to control the Nixietube
//start
unsigned char NixieTable[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
															0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,
															0x00};
/*
	because The order of the Nixietube is reversed
	this function is from left to right to selet
*/

/*
		To using this function (the NIXIETUBE num you want to control , the number you want to display)			
			Author:aquawius
	
*/
void Nixietube(unsigned char Location, Number){
	switch(Location){
		case 1:P2_4 = 1;P2_3 = 1;P2_2 = 1;break;
		case 2:P2_4 = 1;P2_3 = 1;P2_2 = 0;break;
		case 3:P2_4 = 1;P2_3 = 0;P2_2 = 1;break;
		case 4:P2_4 = 1;P2_3 = 0;P2_2 = 0;break;
		case 5:P2_4 = 0;P2_3 = 1;P2_2 = 1;break;
		case 6:P2_4 = 0;P2_3 = 1;P2_2 = 0;break;
		case 7:P2_4 = 0;P2_3 = 0;P2_2 = 1;break;
		case 8:P2_4 = 0;P2_3 = 0;P2_2 = 0;break;
	}
	
	P0 = NixieTable[Number];
}
//end

void Delayxms(unsigned int delay){	// ms
	unsigned char i, j;
	while(delay--){
	i = 2;
	j = 199;
	do
	{ while (--j);
	} while (--i);
	}
}

void main(){
	while(1){
		Nixietube(1,1);
		Delayxms(2);
		Nixietube(2,1);
		Delayxms(2);
		Nixietube(3,1);
		Delayxms(2);
		Nixietube(4,1);
		Delayxms(2);
		Nixietube(5,1);
		Delayxms(2);
		Nixietube(6,1);
		Delayxms(2);
	}


}
